package models

import (
	"gorm.io/gorm"
	"time"
	"user_srv/basic/config"
)

type User struct {
	Id        uint           `gorm:"column:id;type:bigint(20) UNSIGNED;primaryKey;not null;" json:"id"`
	Username  string         `gorm:"column:username;type:varchar(30);comment:用户名;not null;" json:"username"`                                                  // 用户名
	Mobile    string         `gorm:"column:mobile;type:char(11);comment:手机号;not null;" json:"mobile"`                                                         // 手机号
	Password  string         `gorm:"column:password;type:varchar(35);comment:密码;not null;" json:"password"`                                                    // 密码
	UserType  uint           `gorm:"column:user_type;type:tinyint(1) UNSIGNED;comment:用户类型：1:普通用户，2:司机，3:管理员;not null;default:1;" json:"user_type"` // 用户类型：1:普通用户，2:司机，3:管理员
	Status    uint           `gorm:"column:status;type:tinyint(1) UNSIGNED;comment:状态类型:1：空闲，2：忙碌，3：拒单;not null;default:1;" json:"status"`             // 状态类型:1：空闲，2：忙碌，3：拒单
	CreatedAt time.Time      `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (u *User) TableName() string {
	return "user"
}
func (u *User) GetUserByMobile() error { //查询手机号
	return config.DB.Where("mobile = ?", u.Mobile).Limit(1).Find(&u).Error
}
func (u *User) CreateUser() error { //创建用户
	return config.DB.Create(&u).Error
}
func (u *User) GetUserById() error { //查询用户
	return config.DB.Where("id = ?", u.Id).Limit(1).Find(&u).Error

}
func (u *User) UpdateUser() error { //切换司机
	return config.DB.Model(&User{}).Where("id = ?", u.Id).Update("user_type", u.UserType).Error
}
func (u *User) UpdateUserStatus(id int) error { //是否接单
	return config.DB.Model(&User{}).Where("id = ?", id).Update("status", u.Status).Error
}
